<?php // $Id: parsemtd.php,v 1.2 2006/07/31 18:42:29 alex Exp $
// Обнуляем переменную конфигурации
$cfg = null;

// Читаем файл конфигурации модуля
if ($syspath_maincfg = mst_modpath($MT_mod_name,'cfg/main.mtdconf',true,false))
{
	// Файл конфигурации существует
	$content_xml = file_get_contents($syspath_maincfg);
	// Разбираем xml
	$cfg = sitedocs_xmlcfg_parse($content_xml,$cfg);
}
// Глобальные параметры
// echo '<br />Глобальные параметры:<pre>';var_dump($cfg);echo '</pre>';

// Читаем файл конфигурации папки
$syspath_dircfg = dirname($syspath_file).'/index.mtdconf';
if (is_file($syspath_dircfg))
{
	// Файл конфигурации существует
	$content_xml = file_get_contents($syspath_dircfg);
	// Разбираем xml
	$cfg = sitedocs_xmlcfg_parse($content_xml,$cfg);
}
// Параметры папки
// echo '<br />Параметры папки:<pre>';var_dump($cfg);echo '</pre>';

// Читаем файл
$content = file($syspath_file);
// Ищем xml-составляющую
if ("<!--mtd"==trim($content[0]))
{
	// XML-составляющая есть
	if (!($row_num = array_search("mtd-->\n",$content)))
	{
		$row_num = array_search("mtd-->\r\n",$content);
	}
	if ($row_num!==false and $row_num>0)
	{
		// Конец строки найден
		$content_xml = implode('',array_slice($content, 1, $row_num-1));
		$content_html = implode('',array_slice($content,$row_num+1));
		// Разбираем xml
		$cfg = sitedocs_xmlcfg_parse($content_xml,$cfg);
		// $xml = simplexml_load_string($content_xml);
		// echo '<pre>';
		// print_r($xml);
		// var_dump($cfg);
		// print_r($content_xml);
		// echo '</pre>';
		
		/*
		// Заголовок документа
		$Switcher->tml_setvar('title',$cfg['title']);
		// Другие переменные шаблона
		foreach ($cfg['tmlvars'] as $varname=>$varvalue)
		{
			$Switcher->tml_setvar($varname,$varvalue);
		}
		*/
	}else
	{
		// Конец строки не найден
		mst_error('Ошибка разбора файла',
			"Файл ('{$syspath_file}') содержит некорректную разметку.",0);
	}
	
}else
{
	// xml-составляющей нет
	$content_html = implode('',$content);
}
// Параметры файла
// echo '<br />Конечная конфигурация:<pre>';var_dump($cfg);echo '</pre>';

// ***********************************
// Обрабатываем параметры конфигурации

if (is_array($cfg))
{
	// Устанавливаем тему оформления
	if ($cfg['themes'])
	{
		mst_setthemes($cfg['themes']);
	}
	// Добавляем переменную - путь к текущей теме
	$cfg['tmlvars']['url-themes'] = mst_url('THEMES');
	// Исполняем функции, вызванные из шаблонов
	foreach ($cfg['exec'] as $varname=>$varvalue)
	{
		// 
		switch (@$varvalue['type'])
		{
			case 'fvar':
				// Переменные с результатом работы функции
				if (isset($varvalue['initmod']))
				{
					// Затребована инициализация модуля
					mst_initmod($varvalue['initmod']);
				}
				$cfg['tmlvars'][($varvalue['name'])] = 
						call_user_func_array($varvalue['funcname'],$varvalue['vars']);
			break;
			case 'switchurl':
				// Переменная с путем внутри branch
				$cfg['tmlvars'][($varvalue['name'])] = 
						$Switcher->url($varvalue['path']);
			break;
			case 'switchvar':
				// Переменные с результатом загрузки brnach
				$cfg['tmlvars'][($varvalue['name'])] =
						$Switcher->subswitch($varvalue['mod_name'],$varvalue['branch'],
												'switch.php',@$varvalue['disp'],
												@$varvalue['urlvar'],@$varvalue['vpath'],
												array('vars'=>$varvalue['vars']),true);
			break;
			case 'block':
				// Переменные с подключенным блоком
				$tmpl = new HTML_Template_Sigma('/');
				$tmpl->loadTemplateFile(mst_modpath($varvalue['mod_name'],'tml/'.$varvalue['file']));
				// Устанавливаем переменные
				$tmpl->setVariable($cfg['tmlvars']);
				$tmpl->parse();
				$tmpl->get();
				$cfg['tmlvars'][($varvalue['name'])] = $tmpl->get();
			break;
			default:
				mst_error('Неправильный тип исполняемого элементы',
					"В параметрах страницы указан неизвестный тип исполняемого элемента ('{$varvalue['type']}').",0);
			break;
		}
	}	
	// Устанавливаем шаблоны и переменные
	foreach ($cfg['templates'] as $varname=>$varvalue)
	{
	    $Switcher->tml_add($varvalue['runer'],$varvalue['mod'],
							$varvalue['file'],$cfg['tmlvars'],
							$varvalue['reset'],true);
		/*
		if (!$Switcher->tml_add($varvalue['runer'],$varvalue['mod'],
							$varvalue['file'],$cfg['tmlvars'],
							$varvalue['reset'],true))
		{
			//
			mst_error('Неправильные параметры шаблонов',
					"Неправильно указаны параметры шаблона ({$varname}).",0);

		}
		*/
	}

}

// ***********************************
// Обрабатываем содержимое, как шаблон
$tmpl = new HTML_Template_Sigma('/');
$tmpl->setTemplate($content_html);
// Устанавливаем переменные
$tmpl->setVariable($cfg['tmlvars']);
$tmpl->parse();
$tmpl->show();

// echo '<pre>';
// var_dump($cfg);
// echo '</pre>';
?>